﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Principal
{
    public abstract class ConfiguracionInicial
    {
        public static Exception guardarConfiguracion(Dictionary<string,string> parametros) 
        {
            Exception ex = null;
            StreamWriter fs = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + "\\config.data");

            try
            {
                fs.WriteLine("origen");
                fs.WriteLine(parametros["origen"]);

                fs.WriteLine("destino");
                fs.WriteLine(parametros["destino"]);

                fs.WriteLine("sincronizar");
                fs.WriteLine(parametros["sincronizar"]);

                fs.WriteLine("ignorarArchivo");
                fs.WriteLine(parametros["ignorarArchivo"]);

                fs.WriteLine("sincronizarAmbosSentidos");
                fs.WriteLine(parametros["sincronizarAmbosSentidos"]);

                fs.WriteLine("correrAlIniciar");
                fs.WriteLine(parametros["correrAlIniciar"]);

                fs.WriteLine("intervaloSincronizar");
                fs.WriteLine(parametros["intervaloSincronizar"]);

                fs.WriteLine("tamArchivos");
                fs.WriteLine(parametros["tamArchivos"]);

                fs.WriteLine("tamDirectorios");
                fs.WriteLine(parametros["tamDirectorios"]);

                fs.WriteLine("ignorarDirectorio");
                fs.WriteLine(parametros["ignorarDirectorio"]);

                fs.WriteLine("terminacionesIgnoradas");
                fs.WriteLine(parametros["terminacionesIgnoradas"]);

                fs.WriteLine("terminacionesObligatorias");
                fs.WriteLine(parametros["terminacionesObligatorias"]);

                fs.WriteLine("copiarSoloTerminacionesObligatorias");
                fs.WriteLine(parametros["copiarSoloTerminacionesObligatorias"]);

                fs.WriteLine("reconocerDispositivosUSBPlugAndPlay");
                fs.WriteLine(parametros["reconocerDispositivosUSBPlugAndPlay"]);

                fs.WriteLine("habilitarSincronizacionAuto");
                fs.WriteLine(parametros["habilitarSincronizacionAuto"]);

                fs.WriteLine("etiqueta");
                fs.WriteLine(parametros["etiqueta"]);

                fs.WriteLine("radioButtonOrigen");
                fs.WriteLine(parametros["radioButtonOrigen"]);

                fs.WriteLine("radioButtonDestino");
                fs.WriteLine(parametros["radioButtonDestino"]);

                fs.Close();
                return ex;
            }
            catch (Exception exLocal)
            {
                fs.Close();
                ex = exLocal;
                return ex;
            }
            
        }

        public static Dictionary<string, string> cargarConfiguracion()
        {
            string rutaArchivo = System.IO.Directory.GetCurrentDirectory() + "\\config.data";
            Dictionary<string,string> diccionario = new Dictionary<string,string>();
            if (!System.IO.File.Exists(rutaArchivo))
            {
                System.IO.File.Create(rutaArchivo).Close();

            }

            StreamReader fs = new StreamReader(rutaArchivo);

            try
            {
                while (!fs.EndOfStream)
                    diccionario.Add(fs.ReadLine(), fs.ReadLine());
                fs.Close();
            }
            catch
            {
                fs.Close();
                diccionario = new Dictionary<string, string>();
                diccionario = ConfiguracionInicial.crearConfiguracion();
            }
            return diccionario;
        }

        /// <summary>
        /// Creamos la configuración por defecto en caso de que el archivo se encuentre corrupto
        /// </summary>
        /// <returns></returns>
        public static Dictionary<string,string> crearConfiguracion()
        {
            string rutaArchivo = System.IO.Directory.GetCurrentDirectory() + "\\config.data";
            Dictionary<string, string> parametros = new Dictionary<string, string>();
            StreamWriter fs = new StreamWriter(rutaArchivo);

            parametros.Add("origen", "C:\\"); //Origen 
            fs.WriteLine("origen");
            fs.WriteLine(parametros["origen"]);

            parametros.Add("destino", "C:\\"); //Destino 
            fs.WriteLine("destino");
            fs.WriteLine(parametros["destino"]);

            parametros.Add("sincronizar", "False"); //Sincronizar 
            fs.WriteLine("sincronizar");
            fs.WriteLine(parametros["sincronizar"]);

            parametros.Add("ignorarArchivo", "False"); //IgnorarArchivos
            fs.WriteLine("ignorarArchivo");
            fs.WriteLine(parametros["ignorarArchivo"]);

            parametros.Add("sincronizarAmbosSentidos", "False"); //SincronizarAmbosSentidos
            fs.WriteLine("sincronizarAmbosSentidos");
            fs.WriteLine(parametros["sincronizarAmbosSentidos"]);

            parametros.Add("correrAlIniciar", "False"); //CorrerAlIniciar
            fs.WriteLine("correrAlIniciar");
            fs.WriteLine(parametros["correrAlIniciar"]);

            parametros.Add("intervaloSincronizar", "0.5"); //ItervaloSincronizar
            fs.WriteLine("intervaloSincronizar");
            fs.WriteLine(parametros["intervaloSincronizar"]);

            parametros.Add("tamArchivos", "500"); //TamArchivos
            fs.WriteLine("tamArchivos");
            fs.WriteLine(parametros["tamArchivos"]);

            parametros.Add("tamDirectorios", "1"); //TamDirectorios
            fs.WriteLine("tamDirectorios");
            fs.WriteLine(parametros["tamDirectorios"]);

            parametros.Add("ignorarDirectorio", "False"); //ignorarDirectorio
            fs.WriteLine("ignorarDirectorio");
            fs.WriteLine(parametros["ignorarDirectorio"]);

            parametros.Add("terminacionesIgnoradas", ""); //terminacionesIgnoradas
            fs.WriteLine("terminacionesIgnoradas");
            fs.WriteLine(parametros["terminacionesIgnoradas"]);

            parametros.Add("terminacionesObligatorias", ""); //terminacionesObligatorias
            fs.WriteLine("terminacionesObligatorias");
            fs.WriteLine(parametros["terminacionesObligatorias"]);

            parametros.Add("copiarSoloTerminacionesObligatorias", "False"); //copiarSoloTerminacionesObligatorias
            fs.WriteLine("copiarSoloTerminacionesObligatorias");
            fs.WriteLine(parametros["copiarSoloTerminacionesObligatorias"]);

            parametros.Add("reconocerDispositivosUSBPlugAndPlay", "False"); //reconocerDispositivosUSBPlugAndPlay
            fs.WriteLine("reconocerDispositivosUSBPlugAndPlay");
            fs.WriteLine(parametros["reconocerDispositivosUSBPlugAndPlay"]);

            parametros.Add("habilitarSincronizacionAuto", "False"); //habilitarSincronizacionAuto
            fs.WriteLine("habilitarSincronizacionAuto");
            fs.WriteLine(parametros["habilitarSincronizacionAuto"]);

            parametros.Add("etiqueta", ""); //etiqueta
            fs.WriteLine("etiqueta");
            fs.WriteLine(parametros["etiqueta"]);

            parametros.Add("radioButtonOrigen", "True"); //radioButtonOrigen
            fs.WriteLine("radioButtonOrigen");
            fs.WriteLine(parametros["radioButtonOrigen"]);

            parametros.Add("radioButtonDestino", "False"); //radioButtonDestino
            fs.WriteLine("radioButtonDestino");
            fs.WriteLine(parametros["radioButtonDestino"]);

            fs.Close();
            return parametros;
        }
    }
}
